package com.dt.platform.domain.hr;

import com.github.foxnic.dao.entity.Entity;
import io.swagger.annotations.ApiModel;
import javax.persistence.Table;
import com.github.foxnic.sql.meta.DBTable;
import com.dt.platform.constants.db.HrTables.HR_PAPER;
import javax.persistence.Id;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.math.BigDecimal;
import javax.persistence.Transient;
import com.github.foxnic.api.swagger.EnumFor;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.foxnic.commons.lang.DataParser;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import com.github.foxnic.dao.entity.EntityContext;
import com.dt.platform.domain.hr.meta.PaperMeta;
import com.github.foxnic.sql.data.ExprRcd;



/**
 * 考试试卷
 * <p>考试试卷 , 数据表 hr_paper 的PO类型</p>
 * @author 金杰 , maillank@qq.com
 * @since 2024-09-29 10:06:17
 * @sign 210C65C4BE22BCCFBFE827551A8DEB14
 * 此文件由工具自动生成，请勿修改。若表结构或配置发生变动，请使用工具重新生成。
*/

@Table(name = "hr_paper")
@ApiModel(description = "考试试卷 ; 考试试卷 , 数据表 hr_paper 的PO类型")
public class Paper extends Entity {

	private static final long serialVersionUID = 1L;

	public static final DBTable TABLE =HR_PAPER.$TABLE;
	
	/**
	 * 主键：主键
	*/
	@Id
	@ApiModelProperty(required = true,value="主键" , notes = "主键" , example = "606137830619480069")
	private String id;
	
	/**
	 * 所属类型：用户ID
	*/
	@ApiModelProperty(required = false,value="所属类型" , notes = "用户ID" , example = "paperTpl")
	private String ownerCode;
	
	/**
	 * 所属：所属模版ID
	*/
	@ApiModelProperty(required = false,value="所属" , notes = "所属模版ID" , example = "paperTpl")
	private String ownerId;
	
	/**
	 * 考试名称：考试名称
	*/
	@ApiModelProperty(required = false,value="考试名称" , notes = "考试名称" , example = "抽题试卷模式")
	private String name;
	
	/**
	 * 状态：状态
	*/
	@ApiModelProperty(required = false,value="状态" , notes = "状态")
	private String status;
	
	/**
	 * 学习课件：学习课件
	*/
	@ApiModelProperty(required = false,value="学习课件" , notes = "学习课件" , example = "606133466727186437")
	private String learnId;
	
	/**
	 * 考试用时：考试用时
	*/
	@ApiModelProperty(required = false,value="考试用时" , notes = "考试用时" , example = "30")
	private Integer cost;
	
	/**
	 * 关联学习：关联学习
	*/
	@ApiModelProperty(required = false,value="关联学习" , notes = "关联学习" , example = "no")
	private String ifLearn;
	
	/**
	 * 开始时间：开始时间
	*/
	@ApiModelProperty(required = false,value="开始时间" , notes = "开始时间" , example = "2024-09-18 05:15:03")
	private Date sdate;
	
	/**
	 * 结束时间：结束时间
	*/
	@ApiModelProperty(required = false,value="结束时间" , notes = "结束时间" , example = "2024-09-18 05:15:03")
	private Date edate;
	
	/**
	 * 总分：总分
	*/
	@ApiModelProperty(required = false,value="总分" , notes = "总分" , example = "26.0")
	private BigDecimal totalScore;
	
	/**
	 * 通过分：通过分
	*/
	@ApiModelProperty(required = false,value="通过分" , notes = "通过分" , example = "12.0")
	private BigDecimal passScore;
	
	/**
	 * 答题模式：答题模式
	*/
	@ApiModelProperty(required = false,value="答题模式" , notes = "答题模式" , example = "fix")
	private String mode;
	
	/**
	 * 固定模式：固定模式
	*/
	@ApiModelProperty(required = false,value="固定模式" , notes = "固定模式" , example = "enable")
	private String fixEnable;
	
	/**
	 * 抽题模式：抽题模式
	*/
	@ApiModelProperty(required = false,value="抽题模式" , notes = "抽题模式" , example = "disable")
	private String randEnable;
	
	/**
	 * 分数设置：分数设置
	*/
	@ApiModelProperty(required = false,value="分数设置" , notes = "分数设置" , example = "manual")
	private String scoreConf;
	
	/**
	 * 选题策略：选题策略
	*/
	@ApiModelProperty(required = false,value="选题策略" , notes = "选题策略" , example = "rand")
	private String questionMode;
	
	/**
	 * 选择题库：选择题库
	*/
	@ApiModelProperty(required = false,value="选择题库" , notes = "选择题库" , example = "609768526013530118")
	private String learnPaperId;
	
	/**
	 * 题目总数：题目总数
	*/
	@ApiModelProperty(required = false,value="题目总数" , notes = "题目总数" , example = "13")
	private Integer questionRCnt;
	
	/**
	 * 判断题数：判断题数
	*/
	@ApiModelProperty(required = false,value="判断题数" , notes = "判断题数" , example = "5")
	private Integer judgeCnt;
	
	/**
	 * 判断题数：判断题数
	*/
	@ApiModelProperty(required = false,value="判断题数" , notes = "判断题数" , example = "5")
	private Integer judgeRCnt;
	
	/**
	 * 单选题数：单选题数
	*/
	@ApiModelProperty(required = false,value="单选题数" , notes = "单选题数" , example = "5")
	private Integer radioCnt;
	
	/**
	 * 单选题数：单选题数
	*/
	@ApiModelProperty(required = false,value="单选题数" , notes = "单选题数" , example = "5")
	private Integer radioRCnt;
	
	/**
	 * 多选题数：多选题数
	*/
	@ApiModelProperty(required = false,value="多选题数" , notes = "多选题数" , example = "3")
	private Integer choiceCnt;
	
	/**
	 * 多选题数：多选题数
	*/
	@ApiModelProperty(required = false,value="多选题数" , notes = "多选题数" , example = "3")
	private Integer choiceRCnt;
	
	/**
	 * 填空题数：填空题数
	*/
	@ApiModelProperty(required = false,value="填空题数" , notes = "填空题数" , example = "0")
	private Integer textareaCnt;
	
	/**
	 * 填空题数：填空题数
	*/
	@ApiModelProperty(required = false,value="填空题数" , notes = "填空题数" , example = "0")
	private Integer textareaRCnt;
	
	/**
	 * 判断题分：判断题分
	*/
	@ApiModelProperty(required = false,value="判断题分" , notes = "判断题分" , example = "2.0")
	private BigDecimal judgeScore;
	
	/**
	 * 单选题分：单选题分
	*/
	@ApiModelProperty(required = false,value="单选题分" , notes = "单选题分" , example = "2.0")
	private BigDecimal radioScore;
	
	/**
	 * 多选题分：多选题分
	*/
	@ApiModelProperty(required = false,value="多选题分" , notes = "多选题分" , example = "2.0")
	private BigDecimal choiceScore;
	
	/**
	 * 填空题分：填空题分
	*/
	@ApiModelProperty(required = false,value="填空题分" , notes = "填空题分" , example = "2.0")
	private BigDecimal textareaScore;
	
	/**
	 * 备注：备注
	*/
	@ApiModelProperty(required = false,value="备注" , notes = "备注")
	private String notes;
	
	/**
	 * 试卷：试卷
	*/
	@ApiModelProperty(required = false,value="试卷" , notes = "试卷")
	private String paperFormId;
	
	/**
	 * 创建人ID：创建人ID
	*/
	@ApiModelProperty(required = false,value="创建人ID" , notes = "创建人ID" , example = "110588348101165911")
	private String createBy;
	
	/**
	 * 创建时间：创建时间
	*/
	@ApiModelProperty(required = false,value="创建时间" , notes = "创建时间" , example = "2024-09-18 05:15:22")
	private Date createTime;
	
	/**
	 * 修改人ID：修改人ID
	*/
	@ApiModelProperty(required = false,value="修改人ID" , notes = "修改人ID" , example = "110588348101165911")
	private String updateBy;
	
	/**
	 * 修改时间：修改时间
	*/
	@ApiModelProperty(required = false,value="修改时间" , notes = "修改时间" , example = "2024-09-29 08:47:12")
	private Date updateTime;
	
	/**
	 * 是否已删除：是否已删除
	*/
	@ApiModelProperty(required = true,value="是否已删除" , notes = "是否已删除" , example = "0")
	private Integer deleted;
	@Transient
	@EnumFor("deleted")
	private Boolean deletedBool;
	
	/**
	 * 删除人ID：删除人ID
	*/
	@ApiModelProperty(required = false,value="删除人ID" , notes = "删除人ID")
	private String deleteBy;
	
	/**
	 * 删除时间：删除时间
	*/
	@ApiModelProperty(required = false,value="删除时间" , notes = "删除时间")
	private Date deleteTime;
	
	/**
	 * version：version
	*/
	@ApiModelProperty(required = true,value="version" , notes = "version" , example = "17")
	private Integer version;
	
	/**
	 * 租户：租户
	*/
	@ApiModelProperty(required = false,value="租户" , notes = "租户" , example = "T001")
	private String tenantId;
	
	/**
	 * paperQuestionList：paperQuestionList
	*/
	@ApiModelProperty(required = false,value="paperQuestionList" , notes = "paperQuestionList")
	private List<PaperQuestion> paperQuestionList;
	
	/**
	 * PaperQuestionForJudgeList：PaperQuestionForJudgeList
	*/
	@ApiModelProperty(required = false,value="PaperQuestionForJudgeList" , notes = "PaperQuestionForJudgeList")
	private List<PaperQuestion> PaperQuestionForJudgeList;
	
	/**
	 * PaperQuestionForRadioList：PaperQuestionForRadioList
	*/
	@ApiModelProperty(required = false,value="PaperQuestionForRadioList" , notes = "PaperQuestionForRadioList")
	private List<PaperQuestion> PaperQuestionForRadioList;
	
	/**
	 * PaperQuestionForChoiceList：PaperQuestionForChoiceList
	*/
	@ApiModelProperty(required = false,value="PaperQuestionForChoiceList" , notes = "PaperQuestionForChoiceList")
	private List<PaperQuestion> PaperQuestionForChoiceList;
	
	/**
	 * PaperQuestionForTextAreaList：PaperQuestionForTextAreaList
	*/
	@ApiModelProperty(required = false,value="PaperQuestionForTextAreaList" , notes = "PaperQuestionForTextAreaList")
	private List<PaperQuestion> PaperQuestionForTextAreaList;
	
	/**
	 * learn：learn
	*/
	@ApiModelProperty(required = false,value="learn" , notes = "learn")
	private Learn learn;
	
	/**
	 * learnPaper：learnPaper
	*/
	@ApiModelProperty(required = false,value="learnPaper" , notes = "learnPaper")
	private LearnPaper learnPaper;
	
	/**
	 * paperQuestionRealList：paperQuestionRealList
	*/
	@ApiModelProperty(required = false,value="paperQuestionRealList" , notes = "paperQuestionRealList")
	private List<PaperQuestionRel> paperQuestionRealList;
	
	/**
	 * selectedCode：selectedCode
	*/
	@ApiModelProperty(required = false,value="selectedCode" , notes = "selectedCode")
	private String selectedCode;
	
	/**
	 * 获得 主键<br>
	 * 主键
	 * @return 主键
	*/
	public String getId() {
		return id;
	}
	
	/**
	 * 设置 主键
	 * @param id 主键
	 * @return 当前对象
	*/
	public Paper setId(String id) {
		this.id=id;
		return this;
	}
	
	/**
	 * 获得 所属类型<br>
	 * 用户ID
	 * @return 所属类型
	*/
	public String getOwnerCode() {
		return ownerCode;
	}
	
	/**
	 * 设置 所属类型
	 * @param ownerCode 所属类型
	 * @return 当前对象
	*/
	public Paper setOwnerCode(String ownerCode) {
		this.ownerCode=ownerCode;
		return this;
	}
	
	/**
	 * 获得 所属<br>
	 * 所属模版ID
	 * @return 所属
	*/
	public String getOwnerId() {
		return ownerId;
	}
	
	/**
	 * 设置 所属
	 * @param ownerId 所属
	 * @return 当前对象
	*/
	public Paper setOwnerId(String ownerId) {
		this.ownerId=ownerId;
		return this;
	}
	
	/**
	 * 获得 考试名称<br>
	 * 考试名称
	 * @return 考试名称
	*/
	public String getName() {
		return name;
	}
	
	/**
	 * 设置 考试名称
	 * @param name 考试名称
	 * @return 当前对象
	*/
	public Paper setName(String name) {
		this.name=name;
		return this;
	}
	
	/**
	 * 获得 状态<br>
	 * 状态
	 * @return 状态
	*/
	public String getStatus() {
		return status;
	}
	
	/**
	 * 设置 状态
	 * @param status 状态
	 * @return 当前对象
	*/
	public Paper setStatus(String status) {
		this.status=status;
		return this;
	}
	
	/**
	 * 获得 学习课件<br>
	 * 学习课件
	 * @return 学习课件
	*/
	public String getLearnId() {
		return learnId;
	}
	
	/**
	 * 设置 学习课件
	 * @param learnId 学习课件
	 * @return 当前对象
	*/
	public Paper setLearnId(String learnId) {
		this.learnId=learnId;
		return this;
	}
	
	/**
	 * 获得 考试用时<br>
	 * 考试用时
	 * @return 考试用时
	*/
	public Integer getCost() {
		return cost;
	}
	
	/**
	 * 设置 考试用时
	 * @param cost 考试用时
	 * @return 当前对象
	*/
	public Paper setCost(Integer cost) {
		this.cost=cost;
		return this;
	}
	
	/**
	 * 获得 关联学习<br>
	 * 关联学习
	 * @return 关联学习
	*/
	public String getIfLearn() {
		return ifLearn;
	}
	
	/**
	 * 设置 关联学习
	 * @param ifLearn 关联学习
	 * @return 当前对象
	*/
	public Paper setIfLearn(String ifLearn) {
		this.ifLearn=ifLearn;
		return this;
	}
	
	/**
	 * 获得 开始时间<br>
	 * 开始时间
	 * @return 开始时间
	*/
	public Date getSdate() {
		return sdate;
	}
	
	/**
	 * 设置 开始时间
	 * @param sdate 开始时间
	 * @return 当前对象
	*/
	public Paper setSdate(Date sdate) {
		this.sdate=sdate;
		return this;
	}
	
	/**
	 * 获得 结束时间<br>
	 * 结束时间
	 * @return 结束时间
	*/
	public Date getEdate() {
		return edate;
	}
	
	/**
	 * 设置 结束时间
	 * @param edate 结束时间
	 * @return 当前对象
	*/
	public Paper setEdate(Date edate) {
		this.edate=edate;
		return this;
	}
	
	/**
	 * 获得 总分<br>
	 * 总分
	 * @return 总分
	*/
	public BigDecimal getTotalScore() {
		return totalScore;
	}
	
	/**
	 * 设置 总分
	 * @param totalScore 总分
	 * @return 当前对象
	*/
	public Paper setTotalScore(BigDecimal totalScore) {
		this.totalScore=totalScore;
		return this;
	}
	
	/**
	 * 获得 通过分<br>
	 * 通过分
	 * @return 通过分
	*/
	public BigDecimal getPassScore() {
		return passScore;
	}
	
	/**
	 * 设置 通过分
	 * @param passScore 通过分
	 * @return 当前对象
	*/
	public Paper setPassScore(BigDecimal passScore) {
		this.passScore=passScore;
		return this;
	}
	
	/**
	 * 获得 答题模式<br>
	 * 答题模式
	 * @return 答题模式
	*/
	public String getMode() {
		return mode;
	}
	
	/**
	 * 设置 答题模式
	 * @param mode 答题模式
	 * @return 当前对象
	*/
	public Paper setMode(String mode) {
		this.mode=mode;
		return this;
	}
	
	/**
	 * 获得 固定模式<br>
	 * 固定模式
	 * @return 固定模式
	*/
	public String getFixEnable() {
		return fixEnable;
	}
	
	/**
	 * 设置 固定模式
	 * @param fixEnable 固定模式
	 * @return 当前对象
	*/
	public Paper setFixEnable(String fixEnable) {
		this.fixEnable=fixEnable;
		return this;
	}
	
	/**
	 * 获得 抽题模式<br>
	 * 抽题模式
	 * @return 抽题模式
	*/
	public String getRandEnable() {
		return randEnable;
	}
	
	/**
	 * 设置 抽题模式
	 * @param randEnable 抽题模式
	 * @return 当前对象
	*/
	public Paper setRandEnable(String randEnable) {
		this.randEnable=randEnable;
		return this;
	}
	
	/**
	 * 获得 分数设置<br>
	 * 分数设置
	 * @return 分数设置
	*/
	public String getScoreConf() {
		return scoreConf;
	}
	
	/**
	 * 设置 分数设置
	 * @param scoreConf 分数设置
	 * @return 当前对象
	*/
	public Paper setScoreConf(String scoreConf) {
		this.scoreConf=scoreConf;
		return this;
	}
	
	/**
	 * 获得 选题策略<br>
	 * 选题策略
	 * @return 选题策略
	*/
	public String getQuestionMode() {
		return questionMode;
	}
	
	/**
	 * 设置 选题策略
	 * @param questionMode 选题策略
	 * @return 当前对象
	*/
	public Paper setQuestionMode(String questionMode) {
		this.questionMode=questionMode;
		return this;
	}
	
	/**
	 * 获得 选择题库<br>
	 * 选择题库
	 * @return 选择题库
	*/
	public String getLearnPaperId() {
		return learnPaperId;
	}
	
	/**
	 * 设置 选择题库
	 * @param learnPaperId 选择题库
	 * @return 当前对象
	*/
	public Paper setLearnPaperId(String learnPaperId) {
		this.learnPaperId=learnPaperId;
		return this;
	}
	
	/**
	 * 获得 题目总数<br>
	 * 题目总数
	 * @return 题目总数
	*/
	public Integer getQuestionRCnt() {
		return questionRCnt;
	}
	
	/**
	 * 设置 题目总数
	 * @param questionRCnt 题目总数
	 * @return 当前对象
	*/
	public Paper setQuestionRCnt(Integer questionRCnt) {
		this.questionRCnt=questionRCnt;
		return this;
	}
	
	/**
	 * 获得 判断题数<br>
	 * 判断题数
	 * @return 判断题数
	*/
	public Integer getJudgeCnt() {
		return judgeCnt;
	}
	
	/**
	 * 设置 判断题数
	 * @param judgeCnt 判断题数
	 * @return 当前对象
	*/
	public Paper setJudgeCnt(Integer judgeCnt) {
		this.judgeCnt=judgeCnt;
		return this;
	}
	
	/**
	 * 获得 判断题数<br>
	 * 判断题数
	 * @return 判断题数
	*/
	public Integer getJudgeRCnt() {
		return judgeRCnt;
	}
	
	/**
	 * 设置 判断题数
	 * @param judgeRCnt 判断题数
	 * @return 当前对象
	*/
	public Paper setJudgeRCnt(Integer judgeRCnt) {
		this.judgeRCnt=judgeRCnt;
		return this;
	}
	
	/**
	 * 获得 单选题数<br>
	 * 单选题数
	 * @return 单选题数
	*/
	public Integer getRadioCnt() {
		return radioCnt;
	}
	
	/**
	 * 设置 单选题数
	 * @param radioCnt 单选题数
	 * @return 当前对象
	*/
	public Paper setRadioCnt(Integer radioCnt) {
		this.radioCnt=radioCnt;
		return this;
	}
	
	/**
	 * 获得 单选题数<br>
	 * 单选题数
	 * @return 单选题数
	*/
	public Integer getRadioRCnt() {
		return radioRCnt;
	}
	
	/**
	 * 设置 单选题数
	 * @param radioRCnt 单选题数
	 * @return 当前对象
	*/
	public Paper setRadioRCnt(Integer radioRCnt) {
		this.radioRCnt=radioRCnt;
		return this;
	}
	
	/**
	 * 获得 多选题数<br>
	 * 多选题数
	 * @return 多选题数
	*/
	public Integer getChoiceCnt() {
		return choiceCnt;
	}
	
	/**
	 * 设置 多选题数
	 * @param choiceCnt 多选题数
	 * @return 当前对象
	*/
	public Paper setChoiceCnt(Integer choiceCnt) {
		this.choiceCnt=choiceCnt;
		return this;
	}
	
	/**
	 * 获得 多选题数<br>
	 * 多选题数
	 * @return 多选题数
	*/
	public Integer getChoiceRCnt() {
		return choiceRCnt;
	}
	
	/**
	 * 设置 多选题数
	 * @param choiceRCnt 多选题数
	 * @return 当前对象
	*/
	public Paper setChoiceRCnt(Integer choiceRCnt) {
		this.choiceRCnt=choiceRCnt;
		return this;
	}
	
	/**
	 * 获得 填空题数<br>
	 * 填空题数
	 * @return 填空题数
	*/
	public Integer getTextareaCnt() {
		return textareaCnt;
	}
	
	/**
	 * 设置 填空题数
	 * @param textareaCnt 填空题数
	 * @return 当前对象
	*/
	public Paper setTextareaCnt(Integer textareaCnt) {
		this.textareaCnt=textareaCnt;
		return this;
	}
	
	/**
	 * 获得 填空题数<br>
	 * 填空题数
	 * @return 填空题数
	*/
	public Integer getTextareaRCnt() {
		return textareaRCnt;
	}
	
	/**
	 * 设置 填空题数
	 * @param textareaRCnt 填空题数
	 * @return 当前对象
	*/
	public Paper setTextareaRCnt(Integer textareaRCnt) {
		this.textareaRCnt=textareaRCnt;
		return this;
	}
	
	/**
	 * 获得 判断题分<br>
	 * 判断题分
	 * @return 判断题分
	*/
	public BigDecimal getJudgeScore() {
		return judgeScore;
	}
	
	/**
	 * 设置 判断题分
	 * @param judgeScore 判断题分
	 * @return 当前对象
	*/
	public Paper setJudgeScore(BigDecimal judgeScore) {
		this.judgeScore=judgeScore;
		return this;
	}
	
	/**
	 * 获得 单选题分<br>
	 * 单选题分
	 * @return 单选题分
	*/
	public BigDecimal getRadioScore() {
		return radioScore;
	}
	
	/**
	 * 设置 单选题分
	 * @param radioScore 单选题分
	 * @return 当前对象
	*/
	public Paper setRadioScore(BigDecimal radioScore) {
		this.radioScore=radioScore;
		return this;
	}
	
	/**
	 * 获得 多选题分<br>
	 * 多选题分
	 * @return 多选题分
	*/
	public BigDecimal getChoiceScore() {
		return choiceScore;
	}
	
	/**
	 * 设置 多选题分
	 * @param choiceScore 多选题分
	 * @return 当前对象
	*/
	public Paper setChoiceScore(BigDecimal choiceScore) {
		this.choiceScore=choiceScore;
		return this;
	}
	
	/**
	 * 获得 填空题分<br>
	 * 填空题分
	 * @return 填空题分
	*/
	public BigDecimal getTextareaScore() {
		return textareaScore;
	}
	
	/**
	 * 设置 填空题分
	 * @param textareaScore 填空题分
	 * @return 当前对象
	*/
	public Paper setTextareaScore(BigDecimal textareaScore) {
		this.textareaScore=textareaScore;
		return this;
	}
	
	/**
	 * 获得 备注<br>
	 * 备注
	 * @return 备注
	*/
	public String getNotes() {
		return notes;
	}
	
	/**
	 * 设置 备注
	 * @param notes 备注
	 * @return 当前对象
	*/
	public Paper setNotes(String notes) {
		this.notes=notes;
		return this;
	}
	
	/**
	 * 获得 试卷<br>
	 * 试卷
	 * @return 试卷
	*/
	public String getPaperFormId() {
		return paperFormId;
	}
	
	/**
	 * 设置 试卷
	 * @param paperFormId 试卷
	 * @return 当前对象
	*/
	public Paper setPaperFormId(String paperFormId) {
		this.paperFormId=paperFormId;
		return this;
	}
	
	/**
	 * 获得 创建人ID<br>
	 * 创建人ID
	 * @return 创建人ID
	*/
	public String getCreateBy() {
		return createBy;
	}
	
	/**
	 * 设置 创建人ID
	 * @param createBy 创建人ID
	 * @return 当前对象
	*/
	public Paper setCreateBy(String createBy) {
		this.createBy=createBy;
		return this;
	}
	
	/**
	 * 获得 创建时间<br>
	 * 创建时间
	 * @return 创建时间
	*/
	public Date getCreateTime() {
		return createTime;
	}
	
	/**
	 * 设置 创建时间
	 * @param createTime 创建时间
	 * @return 当前对象
	*/
	public Paper setCreateTime(Date createTime) {
		this.createTime=createTime;
		return this;
	}
	
	/**
	 * 获得 修改人ID<br>
	 * 修改人ID
	 * @return 修改人ID
	*/
	public String getUpdateBy() {
		return updateBy;
	}
	
	/**
	 * 设置 修改人ID
	 * @param updateBy 修改人ID
	 * @return 当前对象
	*/
	public Paper setUpdateBy(String updateBy) {
		this.updateBy=updateBy;
		return this;
	}
	
	/**
	 * 获得 修改时间<br>
	 * 修改时间
	 * @return 修改时间
	*/
	public Date getUpdateTime() {
		return updateTime;
	}
	
	/**
	 * 设置 修改时间
	 * @param updateTime 修改时间
	 * @return 当前对象
	*/
	public Paper setUpdateTime(Date updateTime) {
		this.updateTime=updateTime;
		return this;
	}
	
	/**
	 * 获得 是否已删除<br>
	 * 是否已删除
	 * @return 是否已删除
	*/
	public Integer getDeleted() {
		return deleted;
	}
	
	/**
	 * 获得 是否已删除 的投影属性<br>
	 * 等价于 getDeleted 方法，获得对应的枚举类型
	 * @return 是否已删除
	*/
	@Transient
	public Boolean isDeleted() {
		if(this.deletedBool==null) {
			this.deletedBool=DataParser.parseBoolean(deleted);
		}
		return this.deletedBool ;
	}
	
	/**
	 * 设置 是否已删除
	 * @param deleted 是否已删除
	 * @return 当前对象
	*/
	@JsonProperty("deleted")
	public Paper setDeleted(Integer deleted) {
		this.deleted=deleted;
		this.deletedBool=DataParser.parseBoolean(deleted);
		return this;
	}
	
	/**
	 * 设置 是否已删除的投影属性，等同于设置 是否已删除
	 * @param deletedBool 是否已删除
	 * @return 当前对象
	*/
	@Transient
	public Paper setDeleted(Boolean deletedBool) {
		if(deletedBool==null) {
			this.deleted=null;
		} else {
			this.deleted=deletedBool?1:0;
		}
		this.deletedBool=deletedBool;
		return this;
	}
	
	/**
	 * 获得 删除人ID<br>
	 * 删除人ID
	 * @return 删除人ID
	*/
	public String getDeleteBy() {
		return deleteBy;
	}
	
	/**
	 * 设置 删除人ID
	 * @param deleteBy 删除人ID
	 * @return 当前对象
	*/
	public Paper setDeleteBy(String deleteBy) {
		this.deleteBy=deleteBy;
		return this;
	}
	
	/**
	 * 获得 删除时间<br>
	 * 删除时间
	 * @return 删除时间
	*/
	public Date getDeleteTime() {
		return deleteTime;
	}
	
	/**
	 * 设置 删除时间
	 * @param deleteTime 删除时间
	 * @return 当前对象
	*/
	public Paper setDeleteTime(Date deleteTime) {
		this.deleteTime=deleteTime;
		return this;
	}
	
	/**
	 * 获得 version<br>
	 * version
	 * @return version
	*/
	public Integer getVersion() {
		return version;
	}
	
	/**
	 * 设置 version
	 * @param version version
	 * @return 当前对象
	*/
	public Paper setVersion(Integer version) {
		this.version=version;
		return this;
	}
	
	/**
	 * 获得 租户<br>
	 * 租户
	 * @return 租户
	*/
	public String getTenantId() {
		return tenantId;
	}
	
	/**
	 * 设置 租户
	 * @param tenantId 租户
	 * @return 当前对象
	*/
	public Paper setTenantId(String tenantId) {
		this.tenantId=tenantId;
		return this;
	}
	
	/**
	 * 获得 paperQuestionList<br>
	 * paperQuestionList
	 * @return paperQuestionList
	*/
	public List<PaperQuestion> getPaperQuestionList() {
		return paperQuestionList;
	}
	
	/**
	 * 设置 paperQuestionList
	 * @param paperQuestionList paperQuestionList
	 * @return 当前对象
	*/
	public Paper setPaperQuestionList(List<PaperQuestion> paperQuestionList) {
		this.paperQuestionList=paperQuestionList;
		return this;
	}
	
	/**
	 * 添加 paperQuestionList
	 * @param paperQuestion paperQuestionList
	 * @return 当前对象
	*/
	public Paper addPaperQuestion(PaperQuestion... paperQuestion) {
		if(this.paperQuestionList==null) {
			paperQuestionList=new ArrayList<>();
		}
		this.paperQuestionList.addAll(Arrays.asList(paperQuestion));
		return this;
	}
	
	/**
	 * 获得 PaperQuestionForJudgeList<br>
	 * PaperQuestionForJudgeList
	 * @return PaperQuestionForJudgeList
	*/
	public List<PaperQuestion> getPaperQuestionForJudgeList() {
		return PaperQuestionForJudgeList;
	}
	
	/**
	 * 设置 PaperQuestionForJudgeList
	 * @param PaperQuestionForJudgeList PaperQuestionForJudgeList
	 * @return 当前对象
	*/
	public Paper setPaperQuestionForJudgeList(List<PaperQuestion> PaperQuestionForJudgeList) {
		this.PaperQuestionForJudgeList=PaperQuestionForJudgeList;
		return this;
	}
	
	/**
	 * 添加 PaperQuestionForJudgeList
	 * @param PaperQuestionForJudge PaperQuestionForJudgeList
	 * @return 当前对象
	*/
	public Paper addPaperQuestionForJudge(PaperQuestion... PaperQuestionForJudge) {
		if(this.PaperQuestionForJudgeList==null) {
			PaperQuestionForJudgeList=new ArrayList<>();
		}
		this.PaperQuestionForJudgeList.addAll(Arrays.asList(PaperQuestionForJudge));
		return this;
	}
	
	/**
	 * 获得 PaperQuestionForRadioList<br>
	 * PaperQuestionForRadioList
	 * @return PaperQuestionForRadioList
	*/
	public List<PaperQuestion> getPaperQuestionForRadioList() {
		return PaperQuestionForRadioList;
	}
	
	/**
	 * 设置 PaperQuestionForRadioList
	 * @param PaperQuestionForRadioList PaperQuestionForRadioList
	 * @return 当前对象
	*/
	public Paper setPaperQuestionForRadioList(List<PaperQuestion> PaperQuestionForRadioList) {
		this.PaperQuestionForRadioList=PaperQuestionForRadioList;
		return this;
	}
	
	/**
	 * 添加 PaperQuestionForRadioList
	 * @param PaperQuestionForRadio PaperQuestionForRadioList
	 * @return 当前对象
	*/
	public Paper addPaperQuestionForRadio(PaperQuestion... PaperQuestionForRadio) {
		if(this.PaperQuestionForRadioList==null) {
			PaperQuestionForRadioList=new ArrayList<>();
		}
		this.PaperQuestionForRadioList.addAll(Arrays.asList(PaperQuestionForRadio));
		return this;
	}
	
	/**
	 * 获得 PaperQuestionForChoiceList<br>
	 * PaperQuestionForChoiceList
	 * @return PaperQuestionForChoiceList
	*/
	public List<PaperQuestion> getPaperQuestionForChoiceList() {
		return PaperQuestionForChoiceList;
	}
	
	/**
	 * 设置 PaperQuestionForChoiceList
	 * @param PaperQuestionForChoiceList PaperQuestionForChoiceList
	 * @return 当前对象
	*/
	public Paper setPaperQuestionForChoiceList(List<PaperQuestion> PaperQuestionForChoiceList) {
		this.PaperQuestionForChoiceList=PaperQuestionForChoiceList;
		return this;
	}
	
	/**
	 * 添加 PaperQuestionForChoiceList
	 * @param PaperQuestionForChoice PaperQuestionForChoiceList
	 * @return 当前对象
	*/
	public Paper addPaperQuestionForChoice(PaperQuestion... PaperQuestionForChoice) {
		if(this.PaperQuestionForChoiceList==null) {
			PaperQuestionForChoiceList=new ArrayList<>();
		}
		this.PaperQuestionForChoiceList.addAll(Arrays.asList(PaperQuestionForChoice));
		return this;
	}
	
	/**
	 * 获得 PaperQuestionForTextAreaList<br>
	 * PaperQuestionForTextAreaList
	 * @return PaperQuestionForTextAreaList
	*/
	public List<PaperQuestion> getPaperQuestionForTextAreaList() {
		return PaperQuestionForTextAreaList;
	}
	
	/**
	 * 设置 PaperQuestionForTextAreaList
	 * @param PaperQuestionForTextAreaList PaperQuestionForTextAreaList
	 * @return 当前对象
	*/
	public Paper setPaperQuestionForTextAreaList(List<PaperQuestion> PaperQuestionForTextAreaList) {
		this.PaperQuestionForTextAreaList=PaperQuestionForTextAreaList;
		return this;
	}
	
	/**
	 * 添加 PaperQuestionForTextAreaList
	 * @param PaperQuestionForTextArea PaperQuestionForTextAreaList
	 * @return 当前对象
	*/
	public Paper addPaperQuestionForTextArea(PaperQuestion... PaperQuestionForTextArea) {
		if(this.PaperQuestionForTextAreaList==null) {
			PaperQuestionForTextAreaList=new ArrayList<>();
		}
		this.PaperQuestionForTextAreaList.addAll(Arrays.asList(PaperQuestionForTextArea));
		return this;
	}
	
	/**
	 * 获得 learn<br>
	 * learn
	 * @return learn
	*/
	public Learn getLearn() {
		return learn;
	}
	
	/**
	 * 设置 learn
	 * @param learn learn
	 * @return 当前对象
	*/
	public Paper setLearn(Learn learn) {
		this.learn=learn;
		return this;
	}
	
	/**
	 * 获得 learnPaper<br>
	 * learnPaper
	 * @return learnPaper
	*/
	public LearnPaper getLearnPaper() {
		return learnPaper;
	}
	
	/**
	 * 设置 learnPaper
	 * @param learnPaper learnPaper
	 * @return 当前对象
	*/
	public Paper setLearnPaper(LearnPaper learnPaper) {
		this.learnPaper=learnPaper;
		return this;
	}
	
	/**
	 * 获得 paperQuestionRealList<br>
	 * paperQuestionRealList
	 * @return paperQuestionRealList
	*/
	public List<PaperQuestionRel> getPaperQuestionRealList() {
		return paperQuestionRealList;
	}
	
	/**
	 * 设置 paperQuestionRealList
	 * @param paperQuestionRealList paperQuestionRealList
	 * @return 当前对象
	*/
	public Paper setPaperQuestionRealList(List<PaperQuestionRel> paperQuestionRealList) {
		this.paperQuestionRealList=paperQuestionRealList;
		return this;
	}
	
	/**
	 * 添加 paperQuestionRealList
	 * @param paperQuestionReal paperQuestionRealList
	 * @return 当前对象
	*/
	public Paper addPaperQuestionReal(PaperQuestionRel... paperQuestionReal) {
		if(this.paperQuestionRealList==null) {
			paperQuestionRealList=new ArrayList<>();
		}
		this.paperQuestionRealList.addAll(Arrays.asList(paperQuestionReal));
		return this;
	}
	
	/**
	 * 获得 selectedCode<br>
	 * selectedCode
	 * @return selectedCode
	*/
	public String getSelectedCode() {
		return selectedCode;
	}
	
	/**
	 * 设置 selectedCode
	 * @param selectedCode selectedCode
	 * @return 当前对象
	*/
	public Paper setSelectedCode(String selectedCode) {
		this.selectedCode=selectedCode;
		return this;
	}

	/**
	 * 将自己转换成指定类型的PO
	 * @param poType  PO类型
	 * @return Paper , 转换好的 Paper 对象
	*/
	@Transient
	public <T extends Entity> T toPO(Class<T> poType) {
		return EntityContext.create(poType, this);
	}

	/**
	 * 将自己转换成任意指定类型
	 * @param pojoType  Pojo类型
	 * @return Paper , 转换好的 PoJo 对象
	*/
	@Transient
	public <T> T toPojo(Class<T> pojoType) {
		if(Entity.class.isAssignableFrom(pojoType)) {
			return (T)this.toPO((Class<Entity>)pojoType);
		}
		try {
			T pojo=pojoType.newInstance();
			EntityContext.copyProperties(pojo, this);
			return pojo;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * 克隆当前对象
	*/
	@Transient
	public Paper clone() {
		return duplicate(true);
	}

	/**
	 * 复制当前对象
	 * @param all 是否复制全部属性，当 false 时，仅复制来自数据表的属性
	*/
	@Transient
	public Paper duplicate(boolean all) {
		com.dt.platform.domain.hr.meta.PaperMeta.$$proxy$$ inst = new com.dt.platform.domain.hr.meta.PaperMeta.$$proxy$$();
		inst.setChoiceScore(this.getChoiceScore());
		inst.setNotes(this.getNotes());
		inst.setRandEnable(this.getRandEnable());
		inst.setOwnerCode(this.getOwnerCode());
		inst.setScoreConf(this.getScoreConf());
		inst.setOwnerId(this.getOwnerId());
		inst.setRadioCnt(this.getRadioCnt());
		inst.setMode(this.getMode());
		inst.setQuestionMode(this.getQuestionMode());
		inst.setUpdateBy(this.getUpdateBy());
		inst.setId(this.getId());
		inst.setRadioRCnt(this.getRadioRCnt());
		inst.setChoiceCnt(this.getChoiceCnt());
		inst.setJudgeScore(this.getJudgeScore());
		inst.setPaperFormId(this.getPaperFormId());
		inst.setQuestionRCnt(this.getQuestionRCnt());
		inst.setSdate(this.getSdate());
		inst.setCost(this.getCost());
		inst.setJudgeCnt(this.getJudgeCnt());
		inst.setTextareaRCnt(this.getTextareaRCnt());
		inst.setRadioScore(this.getRadioScore());
		inst.setJudgeRCnt(this.getJudgeRCnt());
		inst.setUpdateTime(this.getUpdateTime());
		inst.setEdate(this.getEdate());
		inst.setTotalScore(this.getTotalScore());
		inst.setPassScore(this.getPassScore());
		inst.setVersion(this.getVersion());
		inst.setLearnPaperId(this.getLearnPaperId());
		inst.setChoiceRCnt(this.getChoiceRCnt());
		inst.setCreateBy(this.getCreateBy());
		inst.setDeleted(this.getDeleted());
		inst.setCreateTime(this.getCreateTime());
		inst.setDeleteTime(this.getDeleteTime());
		inst.setTextareaCnt(this.getTextareaCnt());
		inst.setName(this.getName());
		inst.setTextareaScore(this.getTextareaScore());
		inst.setTenantId(this.getTenantId());
		inst.setLearnId(this.getLearnId());
		inst.setDeleteBy(this.getDeleteBy());
		inst.setIfLearn(this.getIfLearn());
		inst.setFixEnable(this.getFixEnable());
		inst.setStatus(this.getStatus());
		if(all) {
			inst.setPaperQuestionList(this.getPaperQuestionList());
			inst.setLearn(this.getLearn());
			inst.setLearnPaper(this.getLearnPaper());
			inst.setPaperQuestionForJudgeList(this.getPaperQuestionForJudgeList());
			inst.setPaperQuestionForRadioList(this.getPaperQuestionForRadioList());
			inst.setPaperQuestionForTextAreaList(this.getPaperQuestionForTextAreaList());
			inst.setPaperQuestionRealList(this.getPaperQuestionRealList());
			inst.setPaperQuestionForChoiceList(this.getPaperQuestionForChoiceList());
			inst.setSelectedCode(this.getSelectedCode());
		}
		inst.clearModifies();
		return inst;
	}

	/**
	 * 克隆当前对象
	*/
	@Transient
	public Paper clone(boolean deep) {
		return EntityContext.clone(Paper.class,this,deep);
	}

	/**
	 * 将 Map 转换成 Paper
	 * @param paperMap 包含实体信息的 Map 对象
	 * @return Paper , 转换好的的 Paper 对象
	*/
	@Transient
	public static Paper createFrom(Map<String,Object> paperMap) {
		if(paperMap==null) return null;
		Paper po = create();
		EntityContext.copyProperties(po,paperMap);
		po.clearModifies();
		return po;
	}

	/**
	 * 将 Pojo 转换成 Paper
	 * @param pojo 包含实体信息的 Pojo 对象
	 * @return Paper , 转换好的的 Paper 对象
	*/
	@Transient
	public static Paper createFrom(Object pojo) {
		if(pojo==null) return null;
		Paper po = create();
		EntityContext.copyProperties(po,pojo);
		po.clearModifies();
		return po;
	}

	/**
	 * 创建一个 Paper，等同于 new
	 * @return Paper 对象
	*/
	@Transient
	public static Paper create() {
		return new com.dt.platform.domain.hr.meta.PaperMeta.$$proxy$$();
	}

	/**
	 * 从 Map 读取
	 * @param map 记录数据
	 * @param cast 是否用 DataParser 进行类型转换
	 * @return  是否读取成功
	*/
	public boolean read(Map<String, Object> map,boolean cast) {
		if(map==null) return false;
		if(cast) {
			this.setChoiceScore(DataParser.parse(BigDecimal.class, map.get(PaperMeta.CHOICE_SCORE)));
			this.setNotes(DataParser.parse(String.class, map.get(PaperMeta.NOTES)));
			this.setRandEnable(DataParser.parse(String.class, map.get(PaperMeta.RAND_ENABLE)));
			this.setOwnerCode(DataParser.parse(String.class, map.get(PaperMeta.OWNER_CODE)));
			this.setScoreConf(DataParser.parse(String.class, map.get(PaperMeta.SCORE_CONF)));
			this.setOwnerId(DataParser.parse(String.class, map.get(PaperMeta.OWNER_ID)));
			this.setRadioCnt(DataParser.parse(Integer.class, map.get(PaperMeta.RADIO_CNT)));
			this.setMode(DataParser.parse(String.class, map.get(PaperMeta.MODE)));
			this.setQuestionMode(DataParser.parse(String.class, map.get(PaperMeta.QUESTION_MODE)));
			this.setUpdateBy(DataParser.parse(String.class, map.get(PaperMeta.UPDATE_BY)));
			this.setId(DataParser.parse(String.class, map.get(PaperMeta.ID)));
			this.setRadioRCnt(DataParser.parse(Integer.class, map.get(PaperMeta.RADIO_R_CNT)));
			this.setChoiceCnt(DataParser.parse(Integer.class, map.get(PaperMeta.CHOICE_CNT)));
			this.setJudgeScore(DataParser.parse(BigDecimal.class, map.get(PaperMeta.JUDGE_SCORE)));
			this.setPaperFormId(DataParser.parse(String.class, map.get(PaperMeta.PAPER_FORM_ID)));
			this.setQuestionRCnt(DataParser.parse(Integer.class, map.get(PaperMeta.QUESTION_R_CNT)));
			this.setSdate(DataParser.parse(Date.class, map.get(PaperMeta.SDATE)));
			this.setCost(DataParser.parse(Integer.class, map.get(PaperMeta.COST)));
			this.setJudgeCnt(DataParser.parse(Integer.class, map.get(PaperMeta.JUDGE_CNT)));
			this.setTextareaRCnt(DataParser.parse(Integer.class, map.get(PaperMeta.TEXTAREA_R_CNT)));
			this.setRadioScore(DataParser.parse(BigDecimal.class, map.get(PaperMeta.RADIO_SCORE)));
			this.setJudgeRCnt(DataParser.parse(Integer.class, map.get(PaperMeta.JUDGE_R_CNT)));
			this.setUpdateTime(DataParser.parse(Date.class, map.get(PaperMeta.UPDATE_TIME)));
			this.setEdate(DataParser.parse(Date.class, map.get(PaperMeta.EDATE)));
			this.setTotalScore(DataParser.parse(BigDecimal.class, map.get(PaperMeta.TOTAL_SCORE)));
			this.setPassScore(DataParser.parse(BigDecimal.class, map.get(PaperMeta.PASS_SCORE)));
			this.setVersion(DataParser.parse(Integer.class, map.get(PaperMeta.VERSION)));
			this.setLearnPaperId(DataParser.parse(String.class, map.get(PaperMeta.LEARN_PAPER_ID)));
			this.setChoiceRCnt(DataParser.parse(Integer.class, map.get(PaperMeta.CHOICE_R_CNT)));
			this.setCreateBy(DataParser.parse(String.class, map.get(PaperMeta.CREATE_BY)));
			this.setDeleted(DataParser.parse(Integer.class, map.get(PaperMeta.DELETED)));
			this.setCreateTime(DataParser.parse(Date.class, map.get(PaperMeta.CREATE_TIME)));
			this.setDeleteTime(DataParser.parse(Date.class, map.get(PaperMeta.DELETE_TIME)));
			this.setTextareaCnt(DataParser.parse(Integer.class, map.get(PaperMeta.TEXTAREA_CNT)));
			this.setName(DataParser.parse(String.class, map.get(PaperMeta.NAME)));
			this.setTextareaScore(DataParser.parse(BigDecimal.class, map.get(PaperMeta.TEXTAREA_SCORE)));
			this.setTenantId(DataParser.parse(String.class, map.get(PaperMeta.TENANT_ID)));
			this.setLearnId(DataParser.parse(String.class, map.get(PaperMeta.LEARN_ID)));
			this.setDeleteBy(DataParser.parse(String.class, map.get(PaperMeta.DELETE_BY)));
			this.setIfLearn(DataParser.parse(String.class, map.get(PaperMeta.IF_LEARN)));
			this.setFixEnable(DataParser.parse(String.class, map.get(PaperMeta.FIX_ENABLE)));
			this.setStatus(DataParser.parse(String.class, map.get(PaperMeta.STATUS)));
			// others
			this.setLearn(DataParser.parse(Learn.class, map.get(PaperMeta.LEARN)));
			this.setLearnPaper(DataParser.parse(LearnPaper.class, map.get(PaperMeta.LEARN_PAPER)));
			this.setSelectedCode(DataParser.parse(String.class, map.get(PaperMeta.SELECTED_CODE)));
			return true;
		} else {
			try {
				this.setChoiceScore( (BigDecimal)map.get(PaperMeta.CHOICE_SCORE));
				this.setNotes( (String)map.get(PaperMeta.NOTES));
				this.setRandEnable( (String)map.get(PaperMeta.RAND_ENABLE));
				this.setOwnerCode( (String)map.get(PaperMeta.OWNER_CODE));
				this.setScoreConf( (String)map.get(PaperMeta.SCORE_CONF));
				this.setOwnerId( (String)map.get(PaperMeta.OWNER_ID));
				this.setRadioCnt( (Integer)map.get(PaperMeta.RADIO_CNT));
				this.setMode( (String)map.get(PaperMeta.MODE));
				this.setQuestionMode( (String)map.get(PaperMeta.QUESTION_MODE));
				this.setUpdateBy( (String)map.get(PaperMeta.UPDATE_BY));
				this.setId( (String)map.get(PaperMeta.ID));
				this.setRadioRCnt( (Integer)map.get(PaperMeta.RADIO_R_CNT));
				this.setChoiceCnt( (Integer)map.get(PaperMeta.CHOICE_CNT));
				this.setJudgeScore( (BigDecimal)map.get(PaperMeta.JUDGE_SCORE));
				this.setPaperFormId( (String)map.get(PaperMeta.PAPER_FORM_ID));
				this.setQuestionRCnt( (Integer)map.get(PaperMeta.QUESTION_R_CNT));
				this.setSdate( (Date)map.get(PaperMeta.SDATE));
				this.setCost( (Integer)map.get(PaperMeta.COST));
				this.setJudgeCnt( (Integer)map.get(PaperMeta.JUDGE_CNT));
				this.setTextareaRCnt( (Integer)map.get(PaperMeta.TEXTAREA_R_CNT));
				this.setRadioScore( (BigDecimal)map.get(PaperMeta.RADIO_SCORE));
				this.setJudgeRCnt( (Integer)map.get(PaperMeta.JUDGE_R_CNT));
				this.setUpdateTime( (Date)map.get(PaperMeta.UPDATE_TIME));
				this.setEdate( (Date)map.get(PaperMeta.EDATE));
				this.setTotalScore( (BigDecimal)map.get(PaperMeta.TOTAL_SCORE));
				this.setPassScore( (BigDecimal)map.get(PaperMeta.PASS_SCORE));
				this.setVersion( (Integer)map.get(PaperMeta.VERSION));
				this.setLearnPaperId( (String)map.get(PaperMeta.LEARN_PAPER_ID));
				this.setChoiceRCnt( (Integer)map.get(PaperMeta.CHOICE_R_CNT));
				this.setCreateBy( (String)map.get(PaperMeta.CREATE_BY));
				this.setDeleted( (Integer)map.get(PaperMeta.DELETED));
				this.setCreateTime( (Date)map.get(PaperMeta.CREATE_TIME));
				this.setDeleteTime( (Date)map.get(PaperMeta.DELETE_TIME));
				this.setTextareaCnt( (Integer)map.get(PaperMeta.TEXTAREA_CNT));
				this.setName( (String)map.get(PaperMeta.NAME));
				this.setTextareaScore( (BigDecimal)map.get(PaperMeta.TEXTAREA_SCORE));
				this.setTenantId( (String)map.get(PaperMeta.TENANT_ID));
				this.setLearnId( (String)map.get(PaperMeta.LEARN_ID));
				this.setDeleteBy( (String)map.get(PaperMeta.DELETE_BY));
				this.setIfLearn( (String)map.get(PaperMeta.IF_LEARN));
				this.setFixEnable( (String)map.get(PaperMeta.FIX_ENABLE));
				this.setStatus( (String)map.get(PaperMeta.STATUS));
				// others
				this.setLearn( (Learn)map.get(PaperMeta.LEARN));
				this.setLearnPaper( (LearnPaper)map.get(PaperMeta.LEARN_PAPER));
				this.setSelectedCode( (String)map.get(PaperMeta.SELECTED_CODE));
				return true;
			} catch (Exception e) {
				return false;
			}
		}
	}

	/**
	 * 从 Map 读取
	 * @param r 记录数据
	 * @param cast 是否用 DataParser 进行类型转换
	 * @return  是否读取成功
	*/
	public boolean read(ExprRcd r,boolean cast) {
		if(r==null) return false;
		if(cast) {
			this.setChoiceScore(DataParser.parse(BigDecimal.class, r.getValue(PaperMeta.CHOICE_SCORE)));
			this.setNotes(DataParser.parse(String.class, r.getValue(PaperMeta.NOTES)));
			this.setRandEnable(DataParser.parse(String.class, r.getValue(PaperMeta.RAND_ENABLE)));
			this.setOwnerCode(DataParser.parse(String.class, r.getValue(PaperMeta.OWNER_CODE)));
			this.setScoreConf(DataParser.parse(String.class, r.getValue(PaperMeta.SCORE_CONF)));
			this.setOwnerId(DataParser.parse(String.class, r.getValue(PaperMeta.OWNER_ID)));
			this.setRadioCnt(DataParser.parse(Integer.class, r.getValue(PaperMeta.RADIO_CNT)));
			this.setMode(DataParser.parse(String.class, r.getValue(PaperMeta.MODE)));
			this.setQuestionMode(DataParser.parse(String.class, r.getValue(PaperMeta.QUESTION_MODE)));
			this.setUpdateBy(DataParser.parse(String.class, r.getValue(PaperMeta.UPDATE_BY)));
			this.setId(DataParser.parse(String.class, r.getValue(PaperMeta.ID)));
			this.setRadioRCnt(DataParser.parse(Integer.class, r.getValue(PaperMeta.RADIO_R_CNT)));
			this.setChoiceCnt(DataParser.parse(Integer.class, r.getValue(PaperMeta.CHOICE_CNT)));
			this.setJudgeScore(DataParser.parse(BigDecimal.class, r.getValue(PaperMeta.JUDGE_SCORE)));
			this.setPaperFormId(DataParser.parse(String.class, r.getValue(PaperMeta.PAPER_FORM_ID)));
			this.setQuestionRCnt(DataParser.parse(Integer.class, r.getValue(PaperMeta.QUESTION_R_CNT)));
			this.setSdate(DataParser.parse(Date.class, r.getValue(PaperMeta.SDATE)));
			this.setCost(DataParser.parse(Integer.class, r.getValue(PaperMeta.COST)));
			this.setJudgeCnt(DataParser.parse(Integer.class, r.getValue(PaperMeta.JUDGE_CNT)));
			this.setTextareaRCnt(DataParser.parse(Integer.class, r.getValue(PaperMeta.TEXTAREA_R_CNT)));
			this.setRadioScore(DataParser.parse(BigDecimal.class, r.getValue(PaperMeta.RADIO_SCORE)));
			this.setJudgeRCnt(DataParser.parse(Integer.class, r.getValue(PaperMeta.JUDGE_R_CNT)));
			this.setUpdateTime(DataParser.parse(Date.class, r.getValue(PaperMeta.UPDATE_TIME)));
			this.setEdate(DataParser.parse(Date.class, r.getValue(PaperMeta.EDATE)));
			this.setTotalScore(DataParser.parse(BigDecimal.class, r.getValue(PaperMeta.TOTAL_SCORE)));
			this.setPassScore(DataParser.parse(BigDecimal.class, r.getValue(PaperMeta.PASS_SCORE)));
			this.setVersion(DataParser.parse(Integer.class, r.getValue(PaperMeta.VERSION)));
			this.setLearnPaperId(DataParser.parse(String.class, r.getValue(PaperMeta.LEARN_PAPER_ID)));
			this.setChoiceRCnt(DataParser.parse(Integer.class, r.getValue(PaperMeta.CHOICE_R_CNT)));
			this.setCreateBy(DataParser.parse(String.class, r.getValue(PaperMeta.CREATE_BY)));
			this.setDeleted(DataParser.parse(Integer.class, r.getValue(PaperMeta.DELETED)));
			this.setCreateTime(DataParser.parse(Date.class, r.getValue(PaperMeta.CREATE_TIME)));
			this.setDeleteTime(DataParser.parse(Date.class, r.getValue(PaperMeta.DELETE_TIME)));
			this.setTextareaCnt(DataParser.parse(Integer.class, r.getValue(PaperMeta.TEXTAREA_CNT)));
			this.setName(DataParser.parse(String.class, r.getValue(PaperMeta.NAME)));
			this.setTextareaScore(DataParser.parse(BigDecimal.class, r.getValue(PaperMeta.TEXTAREA_SCORE)));
			this.setTenantId(DataParser.parse(String.class, r.getValue(PaperMeta.TENANT_ID)));
			this.setLearnId(DataParser.parse(String.class, r.getValue(PaperMeta.LEARN_ID)));
			this.setDeleteBy(DataParser.parse(String.class, r.getValue(PaperMeta.DELETE_BY)));
			this.setIfLearn(DataParser.parse(String.class, r.getValue(PaperMeta.IF_LEARN)));
			this.setFixEnable(DataParser.parse(String.class, r.getValue(PaperMeta.FIX_ENABLE)));
			this.setStatus(DataParser.parse(String.class, r.getValue(PaperMeta.STATUS)));
			return true;
		} else {
			try {
				this.setChoiceScore( (BigDecimal)r.getValue(PaperMeta.CHOICE_SCORE));
				this.setNotes( (String)r.getValue(PaperMeta.NOTES));
				this.setRandEnable( (String)r.getValue(PaperMeta.RAND_ENABLE));
				this.setOwnerCode( (String)r.getValue(PaperMeta.OWNER_CODE));
				this.setScoreConf( (String)r.getValue(PaperMeta.SCORE_CONF));
				this.setOwnerId( (String)r.getValue(PaperMeta.OWNER_ID));
				this.setRadioCnt( (Integer)r.getValue(PaperMeta.RADIO_CNT));
				this.setMode( (String)r.getValue(PaperMeta.MODE));
				this.setQuestionMode( (String)r.getValue(PaperMeta.QUESTION_MODE));
				this.setUpdateBy( (String)r.getValue(PaperMeta.UPDATE_BY));
				this.setId( (String)r.getValue(PaperMeta.ID));
				this.setRadioRCnt( (Integer)r.getValue(PaperMeta.RADIO_R_CNT));
				this.setChoiceCnt( (Integer)r.getValue(PaperMeta.CHOICE_CNT));
				this.setJudgeScore( (BigDecimal)r.getValue(PaperMeta.JUDGE_SCORE));
				this.setPaperFormId( (String)r.getValue(PaperMeta.PAPER_FORM_ID));
				this.setQuestionRCnt( (Integer)r.getValue(PaperMeta.QUESTION_R_CNT));
				this.setSdate( (Date)r.getValue(PaperMeta.SDATE));
				this.setCost( (Integer)r.getValue(PaperMeta.COST));
				this.setJudgeCnt( (Integer)r.getValue(PaperMeta.JUDGE_CNT));
				this.setTextareaRCnt( (Integer)r.getValue(PaperMeta.TEXTAREA_R_CNT));
				this.setRadioScore( (BigDecimal)r.getValue(PaperMeta.RADIO_SCORE));
				this.setJudgeRCnt( (Integer)r.getValue(PaperMeta.JUDGE_R_CNT));
				this.setUpdateTime( (Date)r.getValue(PaperMeta.UPDATE_TIME));
				this.setEdate( (Date)r.getValue(PaperMeta.EDATE));
				this.setTotalScore( (BigDecimal)r.getValue(PaperMeta.TOTAL_SCORE));
				this.setPassScore( (BigDecimal)r.getValue(PaperMeta.PASS_SCORE));
				this.setVersion( (Integer)r.getValue(PaperMeta.VERSION));
				this.setLearnPaperId( (String)r.getValue(PaperMeta.LEARN_PAPER_ID));
				this.setChoiceRCnt( (Integer)r.getValue(PaperMeta.CHOICE_R_CNT));
				this.setCreateBy( (String)r.getValue(PaperMeta.CREATE_BY));
				this.setDeleted( (Integer)r.getValue(PaperMeta.DELETED));
				this.setCreateTime( (Date)r.getValue(PaperMeta.CREATE_TIME));
				this.setDeleteTime( (Date)r.getValue(PaperMeta.DELETE_TIME));
				this.setTextareaCnt( (Integer)r.getValue(PaperMeta.TEXTAREA_CNT));
				this.setName( (String)r.getValue(PaperMeta.NAME));
				this.setTextareaScore( (BigDecimal)r.getValue(PaperMeta.TEXTAREA_SCORE));
				this.setTenantId( (String)r.getValue(PaperMeta.TENANT_ID));
				this.setLearnId( (String)r.getValue(PaperMeta.LEARN_ID));
				this.setDeleteBy( (String)r.getValue(PaperMeta.DELETE_BY));
				this.setIfLearn( (String)r.getValue(PaperMeta.IF_LEARN));
				this.setFixEnable( (String)r.getValue(PaperMeta.FIX_ENABLE));
				this.setStatus( (String)r.getValue(PaperMeta.STATUS));
				return true;
			} catch (Exception e) {
				return false;
			}
		}
	}
}